/*
 * @Copyright: (C) 2019 Zhang Rida. All rights reserved.
 *
 * @Author: Zhang Rida
 * @Email: 215154317@qq.com
 * @FilePath: /WEILA_SDK_MODULE/include/wlsdk_define.h
 * @Date: 2021-02-27 17:08:35
 * @Description:
 *
 * @LastEditors: Zhang Rida
 * @LastEditTime: 2023-08-30 19:19:51
 */
#ifndef _WLSDK_DEFINES_H
#define _WLSDK_DEFINES_H

#include "wl_types.h"

#define WLSDK_VERSION "v1.2.2"

#define MAX_NAME_LEN 64
#define MAX_ACCOUNT_LEN 16
#define MAX_COUNTRYCODE_LEN 8
#define MAX_PASSWORD_LEN 40
#define MAX_APPID_LEN 16
#define MAX_APPKEY_LEN 40
#define MAX_IMEI_LEN 40
#define MAX_IMSI_LEN 40
#define MAX_VERSION_LEN 40
#define MAX_MSGKEY_LEN 40
#define MAX_HOST_LEN 80  // oss域名比较长,不可随意变更
#define MAX_VERIFYCODE_LEN 10
#define MAX_URL_LEN 256
#define MAX_TEXT_LEN 256
#define MAX_ID_LEN 20
#define MAX_TOKEN_LEN 40
#define MAX_MAC_LEN 20
#define MAX_IP_LEN 20
#define MAX_NEAR_BTS_NUM 4   // 附近基站信息最大数量
#define MAX_NEAR_WIFI_NUM 5  // 附近WIFI信息最大数量

typedef void (*wlsdk_enablePA)(int on);

typedef void (*wlsdk_message_callback)(wl_uint32 msgid, wl_int32 resultcode, void* msgdata, wl_uint32 datalen);

// system message
// UI层设置下来的，主要是SDK使用，UI层自己管理该状态，状态变更时调用wlsdk_set_network通知SDK，会触发SDK的重连，只有在WLSDK_SYSTEM_NETWORK_CONNECTED状态下才会触发与服务器的连接
typedef enum {
    WLSDK_SYSTEM_NETWORK_DISCONNECTED = 0,  // 网络未连接
    WLSDK_SYSTEM_NETWORK_CONNECTED    = 1   // 网络已连接
} wlsdk_system_network_state;

// 与服务器连接状态，只用于记录连接是否正常，只有在WLSDK_SYSTEM_SERVER_CONNECTED状态下才会触发登录流程，状态变更时会触发WLSDK_MSG_SYSTEM_SERVER_STATE回调事件
typedef enum {
    WLSDK_SYSTEM_SERVER_DISCONNECT = 0,  // 服务器未连接
    WLSDK_SYSTEM_SERVER_CONNECTING = 1,  // 服务器连接中
    WLSDK_SYSTEM_SERVER_CONNECTED  = 2   // 服务器已连接
} wlsdk_system_server_state;

// login message
// 与服务器连接状态，只用于记录连接是否正常，只有在WLSDK_SYSTEM_SERVER_CONNECTED状态下才会触发登录流程，状态变更时会触发WLSDK_MSG_SYSTEM_SERVER_STATE回调事件
// 登录状态，用于记录SDK是否登录，WLSDK_LOGIN_LOGOUT、WLSDK_LOGIN_EXCEPTION、WLSDK_LOGIN_KICKOUT 这三个状态，
// 重登录时间间隔为2分钟，WLSDK_LOGIN_OFFLINE状态，重登录间隔为15 ~60秒，wlsdk_login会立刻触发登录，
// 状态变更时会触发WLSDK_MSG_LOGIN_STATE回调事件 WLSDK_MSG_LOGIN_STATE
typedef enum {
    WLSDK_LOGIN_OFFLINE   = 0,  // 离线状态
    WLSDK_LOGIN_LOGINING  = 1,  // 登录中
    WLSDK_LOGIN_SYNCING   = 2,  // 同步账号数据中
    WLSDK_LOGIN_ONLINE    = 3,  // 登录成功,数据同步完成
    WLSDK_LOGIN_LOGOUT    = 4,  // 登出(sdk将不再离线自动登录)
    WLSDK_LOGIN_EXCEPTION = 5,  // 登录异常
    WLSDK_LOGIN_KICKOUT   = 6   // 被踢
} wlsdk_login_state;

// 设备绑定状态，extension_state用于表示设备是否已绑定，状态变更时会触发WLSDK_MSG_LOGIN_EXTENSION_STATE事件
typedef enum {
    WLSDK_EXTENSION_NOBIND  = 0,  // 未绑定
    WLSDK_EXTENSION_BINDING = 1,  // 绑定中
    WLSDK_EXTENSION_BIND    = 2,  // 已绑定
    WLSDK_EXTENSION_LOCK    = 3   // 锁定
} wlsdk_extension_state;

typedef enum {
    WLSDK_ANSWER_NORMAL = 0x00,  // 未处理
    WLSDK_ANSWER_ACCEPT = 0x01,  // 接受
    WLSDK_ANSWER_REJECT = 0x02,  // 拒绝
    WLSDK_ANSWER_IGNORE = 0x03   // 忽略
} wlsdk_answer_status;

typedef struct __wlsdk_extension_bind {
    wl_uint32 userid;
    wl_char   nick[MAX_NAME_LEN];
} wlsdk_extension_bind;

// user message
typedef struct __wlsdk_user {
    wl_uint32 userid;
    wl_char   number[MAX_ACCOUNT_LEN];
    wl_uint32 sex;
    wl_char   nick[MAX_NAME_LEN];
    wl_char   phone[MAX_ACCOUNT_LEN];
    wl_char   country_code[MAX_COUNTRYCODE_LEN];
    wl_uint32 status;
    wl_uint64 created;
} wlsdk_user;

// friend message
typedef struct __wlsdk_friend {
    wl_uint32 userid;                   // 好友Id
    wl_char   number[MAX_ACCOUNT_LEN];  // 微喇号
    wl_char   nick[MAX_NAME_LEN];       // 昵称
    wl_uint16 sex;                      // 用户性别, 0 男 1 女
    wl_uint16 shieldstatus;             // 0 不屏蔽 1 屏蔽消息 2 静音
    wl_uint16 tts;                      // 0 关闭 1开启
    wl_uint16 locationshare;            // 0 不共享 1共享
} wlsdk_friend;

typedef struct __wlsdk_friend_list {
    wl_uint32    count;
    wlsdk_friend friends[ZERO_CONTENT_SIZE];
} wlsdk_friend_list;

// group message
typedef enum {
    WLSDK_GROUP_SEARCH_NORMAL = 1,  // 查询所有
    WLSDK_GROUP_SEARCH_NUM    = 2,  // 查询群号
    WLSDK_GROUP_SEARCH_NAME   = 3   // 查询群名
} wlsdk_group_search_type;

typedef enum {
    WLSDK_GROUP_NORMAL = 1,  // 正式群
    WLSDK_GROUP_TMP    = 2,  // 临时群
} wlsdk_group_type;

typedef enum {
    WLSDK_GROUP_PUBLIC_CLOSE = 1,  // 不公开
    WLSDK_GROUP_PUBLIC_OPEN  = 2   // 公开
} wlsdk_group_publictype;

typedef enum {
    WLSDK_GROUP_BURST_QUEUE     = 0,  // 排队式
    WLSDK_GROUP_BURST_CONTROL   = 1,  // 抢占式
    WLSDK_GROUP_BURST_INTERRUPT = 2   // 打断式(高优先级打断低优先级)
} wlsdk_group_bursttype;

typedef enum {
    WLSDK_GROUP_MEMBER_NORMAL = 1,  // 普通用户
    WLSDK_GROUP_MEMBER_ADMIN  = 2   // 管理员
} wlsdk_group_membertype;

typedef enum {
    WLSDK_GROUP_AUTH_NONE    = 1,  // 不鉴权
    WLSDK_GROUP_AUTH_CONFIRM = 2   // 管理员确认
} wlsdk_group_authtype;

typedef struct __wlsdk_group {
    wl_uint64 groupid;                        // 群组Id
    wl_uint32 group_version;                  // 群组版本号
    wl_char   group_name[MAX_NAME_LEN];       // 群组名
    wl_char   group_number[MAX_ACCOUNT_LEN];  // 群号
    wl_uint16 group_type;                     // 群类型
    wl_uint32 ownerid;                        // 群主
    wl_uint16 bursttype;                      // 话权模式
    wl_uint16 shutupstatus;                   // 整体禁言(0不禁言 1禁言)
    wl_uint16 shieldstatus;                   // 0 不屏蔽 1 屏蔽消息 2 静音
    wl_uint16 tts;                            // 0 关闭 1开启
    wl_uint16 locationshare;                  // 0 不共享 1共享
    wl_uint32 member_version;                 // 成员版本
    wl_uint16 member_count;                   // 成员数
    wl_uint16 member_type;                    // 成员类型
    wl_uint16 member_prority;                 // 话权优先级
    wl_uint16 member_shutupstatus;            // 成员禁言
    wl_uint64 member_shutuptimeout;           // 成员禁言超时时间
} wlsdk_group;

typedef struct __wlsdk_group_list {
    wl_uint32   count;
    wlsdk_group groups[ZERO_CONTENT_SIZE];
} wlsdk_group_list;

// session message
typedef enum {
    WLSDK_SESSION_TYPE_SINGLE  = 0x01,  // 个人会话未临时通话,10秒无通话会自动释放
    WLSDK_SESSION_TYPE_GROUP   = 0x02,
    WLSDK_SESSION_TYPE_SERVICE = 0x08
} wlsdk_session_type;

typedef enum {
    WLSDK_SESSION_BURST_IDLE = 0,  // 空闲
    WLSDK_SESSION_BURST_TALK,      // 讲话中
    WLSDK_SESSION_BURST_LISTEN     // 收听中
} wlsdk_burst_state;

typedef struct __wlsdk_session {
    wl_char   name[MAX_NAME_LEN];  // 会话名称
    wl_uint64 sessionid;           // 会话id
    wl_uint16 sessiontype;         // 会话类型
    wl_uint16 isdefault;           // 是否默认群(静默自动回到会话)
    wl_uint16 online_count;        // 在线用户数
    wl_time   timeout;             // 会话过期时间 0不过期
} wlsdk_session;

typedef struct __wlsdk_session_burst {
    wlsdk_session session;
    wl_uint16     burststate;                // 话权状态
    wl_uint16     playtime;                  // 播放时长
    wl_uint16     duration;                  // 语音时长
    wl_uint32     talkerid;                  // 讲话人id
    wl_char       talkername[MAX_NAME_LEN];  // 讲话人名称
} wlsdk_session_burst;

typedef enum {
    WLSDK_VOIP_NONE = 0,   // 终止
    WLSDK_VOIP_CALLING,    // 呼叫中
    WLSDK_VOIP_RING,       // 振铃中
    WLSDK_VOIP_ESTABLISH,  // 建立
} wlsdk_voip_state;

typedef struct __wlsdk_session_voip {
    wlsdk_voip_state state;                   // VoIP状态
    wl_uint32        duration;                // 语音时长
    wl_bool          iscaller;                // 是否主叫
    wl_uint32        userid;                  // 对方用户Id
    wl_char          username[MAX_NAME_LEN];  // 对方用户名称
} wlsdk_session_voip;

typedef struct __wlsdk_session_list {
    wl_uint16     count;               // 会话列表数量
    wl_uint64     active_sessionid;    // 当前活跃会话id
    wl_uint16     active_sessiontype;  // 当前活跃会话类型
    wlsdk_session sessions[ZERO_CONTENT_SIZE];
} wlsdk_session_list;

// location message
typedef struct __wlsdk_location {
    wl_double latitude;
    wl_double longitude;
    wl_double speed;
    wl_double altitude;
    wl_double radius;
    wl_time   timestamp;
    wl_double direction;
    wl_uint16 type;  // 0 wgs84 1 gcj02
} wlsdk_location;

typedef struct __wlsdk_bts_mobile {
    wl_int32 mcc;  // 移动用户所属国家代码，默认值为 460 必填
    wl_int32 mnc;  // 移动网号, 中国移动：0；中国联通：1 必填
    wl_int32 lac;  // 位置区域码, 取值范围：0-65535 cdma=0 时，必填
    wl_int32 cellid;  // 基站小区编号,取值范围：0-65535，0-268435455，其中 0,65535,268435455 不使用，小区编号大于
                      //  65535时为 3G 基站 必填
    wl_int32 signal;  // 信号强度, 取值范围：0到-113dbm.
                      // (如获得信号强度为正数，则请按照以下公式进行转换：获得的正信号强度 * 2 – 113)
} wlsdk_bts_mobile;

typedef struct __wlsdk_bts_cdma {
    wl_int32 sid;     // 系统识别码 cdma=1 时，必填
    wl_int32 nid;     // 网络识别码 cdma=1 时，必填
    wl_int32 bid;     // 小区唯一识别码 cdma=1 时，必填
    wl_int32 signal;  // 信号强度, 取值范围：0到-113dbm.
                      // (如获得信号强度为正数，则请按照以下公式进行转换：获得的正信号强度 * 2 – 113)
} wlsdk_bts_cdma;

typedef struct __wlsdk_bts {
    wl_bool iscdma;  // 是否为cdma信息 0 非cdma 1 cdma
    union __bts {
        wlsdk_bts_mobile mobile;
        wlsdk_bts_cdma   cdma;
    } bts;
} wlsdk_bts;

typedef struct __wlsdk_wifi {
    wl_char  mac[MAX_MAC_LEN];    // mac 地址，例如：00:0f:e2:4e:aa:3e 必填
    wl_char  ssid[MAX_NAME_LEN];  // 无线网络名称 必填
    wl_int32 signal;              // 信号强度, 取值范围：0到-113dbm.
                      // (如获得信号强度为正数，则请按照以下公式进行转换：获得的正信号强度 * 2 – 113)
} wlsdk_wifi;

typedef struct __wlsdk_lbs {
    wl_char    imei[MAX_IMEI_LEN];           // 手机imei //必填
    wl_char    imsi[MAX_IMSI_LEN];           // SIM卡 imsi 可选
    wlsdk_bts  bts;                          // 接入基站信息
    wl_int32   nearbts_count;                // 附近基站数量
    wlsdk_bts  nearbts[MAX_NEAR_BTS_NUM];    // 附近基站信息
    wl_int32   nearwifi_count;               // 附近WIFI数量
    wlsdk_wifi nearwifi[MAX_NEAR_WIFI_NUM];  // 附近WIFI信息
} wlsdk_lbs;

typedef struct __wlsdk_new_version {
    wl_uint32 version_number;
    wl_char   version[MAX_VERSION_LEN];
    wl_char   url[MAX_URL_LEN];
    wl_uint32 file_size;
    wl_char   desc[MAX_TEXT_LEN];
    wl_uint32 type;  // 0 APP新版本 1Resource新版本
} wlsdk_new_version;

typedef enum {
    // system
    WLSDK_MSG_SYSTEM_EXCEPTION         = 0,  // 系统异常 msgdata类型 wl_null
    WLSDK_MSG_SYSTEM_SERVER_STATE      = 1,  // 服务器连接状态 msgdata类型 wlsdk_system_server_state datalen
    WLSDK_MSG_SYSTEM_NEW_VERSION       = 2,  // 新版本 msgdata类型 wlsdk_new_version
    WLSDK_MSG_SYSTEM_ALARM_POWER       = 3,  // 电量告警响应 msgdata类型 wl_null
    WLSDK_MSG_SYSTEM_NETWORK_EXCEPTION = 4,  // SDK检查到网络异常
    WLSDK_MSG_SYSTEM_SERVER_TIMESTAMP  = 5,  // 服务器时间

    // login
    WLSDK_MSG_LOGIN_LOGIN = 100,      // 登录响应 msgdata类型 wl_null
    WLSDK_MSG_LOGIN_LOGOUT,           // 注销响应 msgdata类型 wl_null
    WLSDK_MSG_LOGIN_STATE,            // 登录状态 msgdata类型 wlsdk_login_state
    WLSDK_MSG_LOGIN_EXTENSION_STATE,  // 分机状态(设备为分机类型时有效) msgdata类型 wlsdk_extension_state
    WLSDK_MSG_LOGIN_EXTENSION_VERCODE,      // 分机绑定验证码 msgdata类型 string
    WLSDK_MSG_LOGIN_BIND_EXTENSION,         // 绑定分机请求 msgdata类型 wlsdk_extension_bind
    WLSDK_MSG_LOGIN_ANSWER_BIND_EXTENSION,  // 绑定分机应答 msgdata类型 wl_null
    WLSDK_MSG_LOGIN_SHUTDOWN,               // 关机 msgdata类型 wl_null

    // user
    WLSDK_MSG_USER_SELFINFO = 200,  // 用户信息 msgdata类型 wlsdk_user
    WLSDK_MSG_USER_CONFIG,          // 用户配置 msgdata类型 wl_char 格式json字符串

    // friend
    WLSDK_MSG_FRIEND_GET_FRIENDS = 300,  // 好友列表 msgdata类型 wlsdk_friend_list
    WLSDK_MSG_FRIEND_CHANGED,            // 好友更新 msgdata类型 wl_null;

    // group
    WLSDK_MSG_GROUP_GET_GROUPS = 400,  // 群组列表 msgdata类型 wlsdk_group_list
    WLSDK_MSG_GROUP_CHANGED,           // 群组更新 msgdata类型 wl_nulll

    // session
    WLSDK_MSG_SESSION_GET_SESSIONS = 500,  // 会话列表 msgdata类型 wlsdk_session_list
    WLSDK_MSG_SESSION_BURST_SESSION,       // 当前会话 msgdata类型 wlsdk_session
    WLSDK_MSG_SESSION_REMOVE_SESSION,      // 删除会话 msgdata类型 wl_null
    WLSDK_MSG_SESSION_CLOSE_SESSION,       // 关闭会话 msgdata类型 wl_null
    WLSDK_MSG_SESSION_SET_BURST_SESSION,   // 设置当前会话响应 msgdata类型 wl_null
    WLSDK_MSG_SESSION_BURST_REQUEST,       // 话权请求响应 msgdata类型 wl_null
    WLSDK_MSG_SESSION_BURST_RELEASE,       // 话权是否响应 msgdata类型 wl_null
    WLSDK_MSG_SESSION_BURST_STATE,         // 会话状态 msgdata类型 wlsdk_session_burst
    WLSDK_MSG_SESSION_PLAYBACK,            // 消息回放响应 msgdata类型 wl_null

    // location
    WLSDK_MSG_LOCATION_REQUEST_REALTIME = 600,  // 实时位置请求(APP查看实时位置时触发) msgdata类型 wl_null
    WLSDK_MSG_LOCATION_REQUEST_TRACK,  // 轨迹位置请求(终端待机定时位置上报) msgdata类型 wl_null
    WLSDK_MSG_LOCATION_REQUEST_SOS,    // SOS位置请求 msgdata类型 wl_null
    WLSDK_MSG_LOCATION_RESPONSE_LBS,   // LBS位置响应 msgdata类型 wlsdk_location 仅latitude longitude有效

    // sos
    WLSDK_MSG_SOS_PHONE_ALARM_RESPONSE = 700,  // SOS 电话告警响应 msgdata类型 wl_null
    WLSDK_MSG_SOS_WEILA_ALARM_RESPONSE,        // SOS 微喇告警响应 msgdata类型 wl_null

    // telephone call
    WLSDK_MSG_TELEPHONE_CALL = 800,  // 请求电话拨号 msgdata类型 wl_char

    // voip
    WLSDK_MSG_VOIP_INCOMING = 900,  // Voip来电通知 msgdata类型为 wlsdk_session_voip
    WLSDK_MSG_VOIP_ESTABLISH,       // Voip呼叫建立通知 msgdata类型为 wlsdk_session_voip
    WLSDK_MSG_VOIP_TERMINATE,       // Voip挂断通知 msgdata类型为 wl_null
    WLSDK_MSG_VOIP_STATE,           // Voip状态 msgdata类型为wlsdk_session_voip
} wlsdk_msgid;

typedef enum {
    // System Login Error 0x00~0x1f
    WLSDK_RESULT_SUCCESS = 0,  // 成功
    WLSDK_RESULT_FAILURE = 1,  // 失败

    WLSDK_RESULT_DISCONNECT      = 2,  // 连接中断
    WLSDK_RESULT_NO_MSG_SERVER   = 3,  // 未连接消息服务器
    WLSDK_RESULT_NO_DB_SERVER    = 4,  // 未连接数据服务器
    WLSDK_RESULT_NO_CACHE_SERVER = 5,  // 未连接缓存服务器
    WLSDK_RESULT_NO_LOGIN_SERVER = 6,  // 未连接登录服务器
    WLSDK_RESULT_NO_ROUTE_SERVER = 7,  // 未连接路由服务器

    WLSDK_RESULT_DB_EXCEPTION       = 10,  // 数据库异常
    WLSDK_RESULT_CACHE_EXCEPTION    = 11,  // 缓存异常
    WLSDK_RESULT_SERVER_MAINTENANCE = 12,  // 服务器维护中
    WLSDK_RESULT_SERVER_EXCEPTION   = 13,  // 服务器异常

    WLSDK_RESULT_PARAM_INVALID           = 20,  // 参数错误
    WLSDK_RESULT_REQUEST_NOT_SUPPORT     = 21,  // 请求不支持
    WLSDK_RESULT_REQUEST_LIMITED         = 22,  // 请求受限
    WLSDK_RESULT_REQUEST_INVALID         = 23,  // 请求已过期
    WLSDK_RESULT_VERSION_TOO_OLD         = 24,  // APP版本太旧,需要更新
    WLSDK_RESULT_BLACKLIST_LIMITED       = 25,  // 您已被拉黑
    WLSDK_RESULT_AUTH_INVALID            = 26,  // 认证无效
    WLSDK_RESULT_PERMIT_LIMITED          = 27,  // 权限受限
    WLSDK_RESULT_DATA_NOT_EXIST          = 28,  // 数据不存在
    WLSDK_RESULT_DATA_INVALID            = 29,  // 数据无效
    WLSDK_RESULT_VERIFICATION_CODE_ERROR = 30,  // 验证码错误
    WLSDK_RESULT_TOKEN_INVALID           = 31,  // 授权失效
    WLSDK_RESULT_REQUEST_FREQUENTLY      = 32,  // 请求太频繁
    WLSDK_RESULT_NUMBER_RESOURCE_USE_UP  = 33,  // 号码资源耗尽
    WLSDK_RESULT_REQUEST_TIMEOUT         = 34,  // 请求超时
    WLSDK_RESULT_TRANSMIT_TIMEOUT        = 35,  // 网络传输超时
    WLSDK_RESULT_APP_ILLEGAL             = 36,  // 应用未授权,请从官方渠道获取

    // Login Error
    WLSDK_RESULT_LOGIN_FORBID_IP   = 100,  // 用户IP被封 从forbidDuration获取剩余时长
    WLSDK_RESULT_LOGIN_FORBID_USER = 101,  // 用户被封号 从forbidDuration获取剩余时长
    WLSDK_RESULT_LOGIN_PASSWORD_ERROR_TOO_TIMES =
        102,  // 密码输入错误次数太多,请待系统解封后再试(默认30分钟后才可登录) 从forbidDuration获取剩余时长
    WLSDK_RESULT_LOGIN_SYSTEM_FULL               = 103,  // 在线用户达到系统容量
    WLSDK_RESULT_LOGIN_VERIFYCODE_INVALID        = 104,  // 验证码无效
    WLSDK_RESULT_LOGIN_ACCOUNT_OR_PASSWD_ERROR   = 105,  // 账号或密码错误
    WLSDK_RESULT_LOGIN_EXTENSION_HAS_BIND        = 110,  // 用户已绑定设备
    WLSDK_RESULT_LOGIN_EXTENSION_BINDING         = 111,  // 设备绑定中
    WLSDK_RESULT_LOGIN_EXTENSION_NOT_BIND        = 112,  // 未绑定分机
    WLSDK_RESULT_LOGIN_EXTENSION_LAWLESSNESS     = 113,  // 非法设备(设备不再自动登录)
    WLSDK_RESULT_LOGIN_EXTENSION_LICENSE_LIMITED = 114,  // 许可证用完(设备不再自动登录)
    WLSDK_RESULT_LOGIN_EXTENSION_ACCOUNT_ERROR   = 115,  // 设备账号错误(设备不再自动登录)
    WLSDK_RESULT_LOGIN_EXTENSION_PASSWORD_ERROR  = 116,  // 设备密码错误(设备不再自动登录)

    // User Error
    WLSDK_RESULT_USER_NOT_EXIST               = 200,  // 用户不存在
    WLSDK_RESULT_USER_PERIPHERAL_UNAUTHORIZED = 201,  // 外设未授权
    WLSDK_RESULT_USER_PERIPHERAL_REPLICATED   = 202,  // 外设被复制
    WLSDK_RESULT_USER_PERIPHERAL_MULTIDEVICE  = 203,  // 外设在多设备上使用

    // Friend Error
    WLSDK_RESULT_FRIEND_NOT_FRIEND       = 300,  // 不是好友
    WLSDK_RESULT_FRIEND_INVITE_NOT_EXIST = 301,  // 好友邀请已过期
    WLSDK_RESULT_FRIEND_IS_BLACKLIST     = 302,  // 您已被对方加入黑名单
    WLSDK_RESULT_FRIEND_SHIELD_OPEN      = 303,  // 好友已开启消息屏蔽

    // Group Error
    WLSDK_RESULT_GROUP_NOT_EXIST         = 400,  // 群组不存在
    WLSDK_RESULT_GROUP_ACCESS_LIMITED    = 401,  // 访问受限,请明天再试(被踢或被封)
    WLSDK_RESULT_GROUP_YOU_ARE_NOT_OWNER = 402,  // 您不是群主
    WLSDK_RESULT_GROUP_YOU_ARE_NOT_ADMIN = 403,  // 您不是群管理员
    WLSDK_RESULT_GROUP_MEMBERS_FULL      = 404,  // 成员数达到上限
    WLSDK_RESULT_GROUP_NUMBER_USEUP      = 405,  // 群组号耗尽
    WLSDK_RESULT_GROUP_BROADCAST_EXIST   = 406,  // 群组广播已存在
    WLSDK_RESULT_GROUP_BROADCAST_NOEXIST = 407,  // 群组广播不存在
    WLSDK_RESULT_GROUP_PASSWORD_ERROR    = 408,  // 群密码错误
    WLSDK_RESULT_GROUP_OWNER_FULL        = 409,  // 您创建的群组数达到上限
    WLSDK_RESULT_GROUP_BURST_OCCUPY      = 410,  // 话权被占用
    WLSDK_RESULT_GROUP_USER_NOT_MEMBER   = 411,  // 用户不是群成员
    WLSDK_RESULT_GROUP_MEMBER_LIMIT_MAX  = 412,  // 群成员上限达到最大值
    WLSDK_RESULT_GROUP_MEMBER_IS_ADMIN   = 413,  // 不能对管理员进行操作
    WLSDK_RESULT_GROUP_USER_IN_BLACKLIST = 414,  // 用户被加入群黑名单
    WLSDK_RESULT_GROUP_OWNER_CANNOT_EXIT = 415,  // 群主不能退群,请先转让群主或直接删除群
    WLSDK_RESULT_GROUP_YOU_ARE_SHUTUP    = 416,  // 你已被禁言
    WLSDK_RESULT_GROUP_MEMBER_SHUTUP     = 417,  // 群成员被禁言
    WLSDK_RESULT_GROUP_MEMBER_IS_OWNER   = 418,  // 不能对群主进行操作
    WLSDK_RESULT_GROUP_BURST_REVOKE      = 419,  // 话权被回收

    // Business Error
    WLSDK_RESULT_BUSINESS_SERVICE_CLOSED           = 1000,  // 服务已关闭
    WLSDK_RESULT_BUSINESS_SERVICE_CONFIG_TOO_LARGE = 1001,  // 配置信息长度超过限制
    WLSDK_RESULT_BUSINESS_STAFF_INVALID            = 1002,  // 不是客服号
    WLSDK_RESULT_BUSINESS_LABEL_NOT_EXIST          = 1003,  // 标签不存在
    WLSDK_RESULT_BUSINESS_YOU_ARE_NOT_LABEL_OWNER  = 1004,  // 你不是标签的创建者
    WLSDK_RESULT_BUSINESS_YOU_ARE_NOT_TRACE_OWNER  = 1005,  // 你不是标签的创建者
    WLSDK_RESULT_BUSINESS_STAFF_NOT_ONLINE         = 1006,  // 客服不在线
    WLSDK_RESULT_BUSINESS_STAFF_BUSY               = 1007,  // 客服忙

    // Local Error
    WLSDK_RESULT_LOCAL_OUT_OF_MEMORY          = 30000,  // 内存耗尽
    WLSDK_RESULT_LOCAL_DATA_INVALID           = 30001,  // 数据异常
    WLSDK_RESULT_LOCAL_SYSTEM_EXCEPTION       = 30002,  // 设备系统异常
    WLSDK_RESULT_LOCAL_SYSTEM_RELEASE         = 30003,  // 设备系统释放
    WLSDK_RESULT_LOCAL_HOST_DNS_ERROR         = 30004,  // 域名解析异常
    WLSDK_RESULT_LOCAL_HOST_DNS_TIMEOUT       = 30005,  // 域名解析超时
    WLSDK_RESULT_LOCAL_NETWORK_DISCONNECTED   = 30006,  // 网络中断
    WLSDK_RESULT_LOCAL_NETWORK_BLOCK          = 30007,  // 网络拥塞
    WLSDK_RESULT_LOCAL_CONNECT_FAIL           = 30008,  // 连接服务器失败
    WLSDK_RESULT_LOCAL_SOCKET_EXCEPTION       = 30009,  // 网络资源异常
    WLSDK_RESULT_LOCAL_DISCONNECTED           = 30010,  // 服务器连接中断
    WLSDK_RESULT_LOCAL_CONNECT_TIMEOUT        = 30011,  // 连接超时
    WLSDK_RESULT_LOCAL_REQUEST_TIMEOUT        = 30012,  // 请求超时
    WLSDK_RESULT_LOCAL_BAD_REQUEST            = 30013,  // 请求数据错误
    WLSDK_RESULT_LOCAL_REQUEST_NOT_FOUND      = 30014,  // 请求不存在
    WLSDK_RESULT_LOCAL_SERVER_ERROR           = 30015,  // 服务器错误
    WLSDK_RESULT_LOCAL_FILE_ERROR             = 30016,  // 文件错误
    WLSDK_RESULT_LOCAL_HTTP_ERROR             = 30017,  // HTTP请求异常
    WLSDK_RESULT_LOCAL_SESSION_INEXISTENT     = 30018,  // 空会话
    WLSDK_RESULT_LOCAL_OFFLINE                = 30019,  // 用户离线
    WLSDK_RESULT_LOCAL_PLAYBACK_TO_BOTTOM     = 30020,  // 回放记录到底
    WLSDK_RESULT_LOCAL_PLAYER_ERROR           = 30021,  // 播放器异常
    WLSDK_RESULT_LOCAL_RECORDER_ERROR         = 30022,  // 录音异常
    WLSDK_RESULT_LOCAL_TALKING                = 30023,  // 讲话中
    WLSDK_RESULT_LOCAL_BURST_INTERRUPT        = 30024,  // 讲话被打断
    WLSDK_RESULT_LOCAL_BURST_REVOKE           = 30025,  // 讲话被回收
    WLSDK_RESULT_LOCAL_BURST_TIMEOUT          = 30026,  // 讲话超时
    WLSDK_RESULT_LOCAL_BURST_MONITOR          = 30027,  // 设备处于监护中,无法讲话
    WLSDK_RESULT_LOCAL_SESSION_REMOTE_OFFLINE = 30028,  // 会话用户不在线
    WLSDK_RESULT_LOCAL_VOIP_HANGUP            = 30029,  // voip已挂断
    WLSDK_RESULT_LOCAL_SESSION_SWITCH_EMPTY   = 30031,  // 没有可切换的频道
} wlsdk_resultcode;

#endif
